#pragma once

#include "comutil.h"
#pragma comment(lib, "comsuppw.lib")
#include "Property/FCProperty.h"
#include "Property/FCPropertyContainer.h"

namespace UIStone
{
	// PanelItem
// 	FC_MAKE_PROPERTY(X,				LONG,		L"x")
// 	FC_MAKE_PROPERTY(Y,				LONG,		L"y")
// 	FC_MAKE_PROPERTY(Width,			LONG,		L"width")
// 	FC_MAKE_PROPERTY(Height,		LONG,		L"height")
	FC_MAKE_PROPERTY(ID,			LONG,		L"id")

	// Font
	FC_MAKE_PROPERTY(FontColor,			COLORREF,	L"font-color")
	FC_MAKE_PROPERTY(FontFamily,		_bstr_t,	L"font-family")
	FC_MAKE_PROPERTY(FontSize,			LONG,		L"font-size")
	FC_MAKE_PROPERTY(FontSizeUnit,		bool,		L"font-size-unit")
	FC_MAKE_PROPERTY(FontItalic,		bool,		L"font-italic")
	FC_MAKE_PROPERTY(FontUnderline,		bool,		L"font-underline")
	FC_MAKE_PROPERTY(FontStrikeOut,		bool,		L"font-strikeout")
	FC_MAKE_PROPERTY(FontWeight,		LONG,		L"font-weight")
// 	Escapement
// 	Orientation
// 	CharSet
// 	OutPrecision
// 	ClipPrecision
// 	Quality
// 	PitchAndFamily

	// Text
	FC_MAKE_PROPERTY(TextOverflow,		LONG,		L"text-overflow")
	FC_MAKE_PROPERTY(TextVOverflow,		bool,		L"text-voverflow")
	FC_MAKE_PROPERTY(TextAlign,			LONG,		L"text-align")
	FC_MAKE_PROPERTY(TextVAlign,		LONG,		L"text-valign")
	FC_MAKE_PROPERTY(TextPrefix,		LONG,		L"text-prefix")
	FC_MAKE_PROPERTY(TextLine,			LONG,		L"text-line")
	FC_MAKE_PROPERTY(TextDirection,		bool,		L"text-direction")
	FC_MAKE_PROPERTY(TextExpandTabs,	bool,		L"text-expandtab")

	// Background
	FC_MAKE_PROPERTY(BackgroundColor,	COLORREF,	L"background-color")
	FC_MAKE_PROPERTY(BackgroundColorTransparent,	bool,	L"background-color-transparent")
	FC_MAKE_PROPERTY(BackgroundImage,	_bstr_t,	L"background-image")
	FC_MAKE_PROPERTY(BackgroundRepeat,	LONG,		L"background-repeat")

	// Position
	FC_MAKE_PROPERTY(PositionMode,		LONG,		L"position-mode")
	FC_MAKE_PROPERTY(X,					LONG,		L"x")
	FC_MAKE_PROPERTY(Y,					LONG,		L"y")
	FC_MAKE_PROPERTY(XPercent,			LONG,		L"x-percent")
	FC_MAKE_PROPERTY(YPercent,			LONG,		L"y-percent")
	FC_MAKE_PROPERTY(XIsRight,			bool,		L"x-is-right")
	FC_MAKE_PROPERTY(YIsBottom,			bool,		L"y-is-bottom")
	FC_MAKE_PROPERTY(ZIndex,			LONG,		L"z-index")

	// Dimension
	FC_MAKE_PROPERTY(Width,				LONG,		L"width")
	FC_MAKE_PROPERTY(Height,			LONG,		L"height")
	FC_MAKE_PROPERTY(MaxWidth,			LONG,		L"max-width")
	FC_MAKE_PROPERTY(MinWidth,			LONG,		L"min-width")
	FC_MAKE_PROPERTY(MaxHeight,			LONG,		L"max-height")
	FC_MAKE_PROPERTY(MinHeight,			LONG,		L"min-height")
	FC_MAKE_PROPERTY(WidthPercent,		LONG,		L"width-percent")
	FC_MAKE_PROPERTY(HeightPercent,		LONG,		L"height-percent")
	FC_MAKE_PROPERTY(MaxWidthPercent,	LONG,		L"max-width-percent")
	FC_MAKE_PROPERTY(MinWidthPercent,	LONG,		L"min-width-percent")
	FC_MAKE_PROPERTY(MaxHeightPercent,	LONG,		L"max-height-percent")
	FC_MAKE_PROPERTY(MinHeightPercent,	LONG,		L"min-height-percent")

	// Layout
	FC_MAKE_PROPERTY(LayoutClear,		LONG,		L"layout-clear")
	FC_MAKE_PROPERTY(LayoutFloat,		LONG,		L"layout-float")
	FC_MAKE_PROPERTY(LayoutCompress,	LONG,		L"layout-compress")

	// Margin
	FC_MAKE_PROPERTY(MarginTop,			LONG,		L"margin-top")
	FC_MAKE_PROPERTY(MarginBottom,		LONG,		L"margin-bottom")
	FC_MAKE_PROPERTY(MarginLeft,		LONG,		L"margin-left")
	FC_MAKE_PROPERTY(MarginRight,		LONG,		L"margin-right")
	FC_MAKE_PROPERTY(MarginTopPercent,		LONG,		L"margin-top-percent")
	FC_MAKE_PROPERTY(MarginBottomPercent,	LONG,		L"margin-bottom-percent")
	FC_MAKE_PROPERTY(MarginLeftPercent,		LONG,		L"margin-left-percent")
	FC_MAKE_PROPERTY(MarginRightPercent,	LONG,		L"margin-right-percent")

	// Border
	FC_MAKE_PROPERTY(BorderWidth,		LONG,		L"border-width")
	FC_MAKE_PROPERTY(BorderStyle,		LONG,		L"border-style")
	FC_MAKE_PROPERTY(BorderColor,		_bstr_t,	L"border-color")

	// Padding
	FC_MAKE_PROPERTY(PaddingTop,		LONG,		L"padding-top")
	FC_MAKE_PROPERTY(PaddingBottom,		LONG,		L"padding-bottom")
	FC_MAKE_PROPERTY(PaddingLeft,		LONG,		L"padding-left")
	FC_MAKE_PROPERTY(PaddingRight,		LONG,		L"padding-right")
	FC_MAKE_PROPERTY(PaddingTopPercent,		LONG,		L"padding-top-percent")
	FC_MAKE_PROPERTY(PaddingBottomPercent,	LONG,		L"padding-bottom-percent")
	FC_MAKE_PROPERTY(PaddingLeftPercent,	LONG,		L"padding-left-percent")
	FC_MAKE_PROPERTY(PaddingRightPercent,	LONG,		L"padding-right-percent")

	// Cursor
	FC_MAKE_PROPERTY(CursorID,			LONG,		L"cursor-id")
	FC_MAKE_PROPERTY(CursorUrl,			_bstr_t,	L"cursor-url")

	// Style
	FC_MAKE_PROPERTY(Background,		LONG,		L"background")
	FC_MAKE_PROPERTY(Border,			LONG,		L"border")
	FC_MAKE_PROPERTY(Cursor,			LONG,		L"cursor")
	FC_MAKE_PROPERTY(Dimension,			LONG,		L"dimension")
	FC_MAKE_PROPERTY(Font,				LONG,		L"font")
	FC_MAKE_PROPERTY(Layout,			LONG,		L"layout")
	FC_MAKE_PROPERTY(Margin,			LONG,		L"margin")
	FC_MAKE_PROPERTY(Padding,			LONG,		L"padding")
	FC_MAKE_PROPERTY(Position,			LONG,		L"position")
	FC_MAKE_PROPERTY(Text,				LONG,		L"text")
}